/*
 * Queue.java
 * Autor: Jennifer Pamela Valdez Cabrera
 * Carne: 10189
 * Fecha de entrega: 3 de septiembre de 2011
 * Descripcion: Es una interfaz para una Cola, el cual es una estructura 
		que el primer elemento en entrar es el primero en salir.
*/

public interface Queue<E> {
   
    /* 
      ---------------------------------------------------------------------
      add: agrega un elemento a la cola, el cual es recibido como
              parametro y no devuelve ningun valor.
      ---------------------------------------------------------------------
    */ 
    public void add(E value);
    // post: el valor es agregado al final de la cola
    
    /* 
        ---------------------------------------------------------------------
        size: indica cuantos elementos posee la cola
        ---------------------------------------------------------------------
    */ 
    int size();
    // post: devuelve el numero de elementos en la cola
    
    /* 
        ---------------------------------------------------------------------
        isEmpty: indica si la cola esta vacia
        ---------------------------------------------------------------------
    */ 
    boolean isEmpty();
    // post: devuelve verdadero si la cola esta vacia
    
    
    /* 
        ---------------------------------------------------------------------
        remove: obtiene el elemento al cual le toca salir y lo remueve de la
                cola si no esta vacio; dicho elemento es devuelto
        ---------------------------------------------------------------------
    */ 
    E remove();
    // pre: la cola no esta vacia
    // post: devuelve y remueve el primer elemento de la cola
    
    
    /* 
        ---------------------------------------------------------------------
        peek: devuelve el elemento proximo a ser removido
        ---------------------------------------------------------------------
    */ 
    E peek();
    // pre: la cola no esta vacia
    // post: devuelve el primer elemento de la cola 
}
